from django.utils.deprecation import MiddlewareMixin


#定义一个中间件的类,继承MiddlewareMixin类，写完后要去setting.py中注册中间件，
# 可以右键 MyMiddleware,拷贝引用，copy Reference,再去setting.py里粘贴
#是user功能模块的全局中间件，对所有视图函数都适用，不用再注册路由了
class MyMiddleware(MiddlewareMixin):

    #重写init方法，继承父类init方法并添加打印
    def __init__(self, get_response=None):
        super().__init__(get_response)

        #调试模式下，init会执行两次
        print('init')

    def process_request(self,request):
        #注意：可以返回None或者response对象
        #如果不返回就会继续执行视图函数再执行process_response,
        #如果返回response对象，那么就不执行视图函数，而直接执行process_response
        #可以做拦截的作用，如果拦截，那么就给他返回一个response对象，这样就可以了
        print("视图函数执行之前")
    def process_response(self,request,response):
        print("视图函数之后执行")
        #注意，process_response一定有response参数，而且一定要返回response，否则报错
        return response
